[小ネタ] 複数のプラットフォームで terraform initする際の注意点
こんにちは!コンサル部のinomaso(@inomasosan)です。
チームでTerraformを運用していた際に、terraform init
で.terraform.hcl.lock
に関するエラーに遭遇したため、対応方法をまとめていきます。
検証環境
今回実行した環境は以下の通りです。
項目 | バージョン |
---|---|
Terraform | 1.1.7 |
AWS Provider | 4.12.1 |
エラー内容
ローカル端末でterraform init
した際に、以下のようなエラーが発生しました。
│ Error: Failed to install provider │ │ Error while installing hashicorp/aws v4.12.1: the current package for │ registry.terraform.io/hashicorp/aws 4.12.1 doesn't match any of the checksums previously recorded │ in the dependency lock file
原因
結論から言うと.terraform.hcl.lock
に含まれるproviderのチェックサムが、複数のプラットフォームに対応していないことが原因でした。
今回の場合ですと、Windowsでterraform init
した後に、Macでterraform init
したところエラーが発生しました。
OSやCPUアーキテクチャが異なる環境でterraform init
を実行したい場合は、.terraform.hcl.lock
を事前に作成する必要があります。
対応
terraform providers lock
で、使用予定のプラットフォームのチェックサムが事前入力された.terraform.hcl.lock
を作成することができます。
以下のコマンドにてWindows、Mac、LinuxでAMD64やx86_64、Armに対応したlockファイルを可能です。
terraform providers lock \ -platform=windows_amd64 \ -platform=darwin_amd64 \ -platform=linux_amd64 \ -platform=darwin_arm64 \ -platform=linux_arm64
windows_arm64は対応しているの?
AWS Provider4.12.1だと未サポートでした。
│ Terraform failed to fetch the requested providers for windows_arm64 in order to calculate their │ checksums: some providers could not be installed: │ - registry.terraform.io/hashicorp/aws: provider registry.terraform.io/hashicorp/aws 4.12.1 is not │ available for windows_arm64
WindowsのArmでTerraformの運用が必要な場合には、注意が必要そうです。
参考
まとめ
複数のプラットフォームでterraform init
を実行する場合は.terraform.hcl.lock
の事前作成が必要だよというブログでした。
この記事が、どなたかのお役に立てば幸いです。それでは!